Инструкция по установке EAI почтового сервера под ОС CentOS 7: различия между версиями
Admin (обсуждение | вклад) |
Admin (обсуждение | вклад) |
||
(не показано 17 промежуточных версий этого же участника) | |||
Строка 22: | Строка 22: | ||
== Установка EAI почтового сервера == | == Установка EAI почтового сервера == | ||
Задайте имя хоста | |||
1. Обновите пакеты почтового сервера до последней версии | 1. Обновите пакеты почтового сервера до последней версии | ||
Строка 29: | Строка 29: | ||
2. Задайте имя хоста (например, mail.test.ru) с помощью команды | 2. Задайте имя хоста (например, mail.test.ru) с помощью команды | ||
<pre> | |||
# hostnamectl set-hostname mail.test.ru | |||
</pre> | |||
3. Добавьте имя хоста в файл hosts | 3. Добавьте имя хоста в файл hosts | ||
Строка 36: | Строка 38: | ||
''Пример файла hosts'' | ''Пример файла hosts'' | ||
<pre> | <pre> | ||
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 | 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 mail.test.ru | ||
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 mail.test.ru | |||
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 | |||
</pre> | </pre> | ||
''*В зависимости от среды установки CentOS вам может понадобиться установить дополнительные сервисы (например, может быть недоступна команда «vi»)'' | ''*В зависимости от среды установки CentOS вам может понадобиться установить дополнительные сервисы (например, может быть недоступна команда «vi»)'' | ||
Строка 76: | Строка 77: | ||
''Пример'' | ''Пример'' | ||
< | <pre>cockpit dhcpv6-client ssh </pre> | ||
4. Откройте необходимые сервисы на файрволе в публичной зоне почтового сервера | 4. Откройте необходимые сервисы на файрволе в публичной зоне почтового сервера | ||
Строка 97: | Строка 98: | ||
# firewall-cmd --reload</pre> | # firewall-cmd --reload</pre> | ||
5. Еще раз проверьте список сервисов на файрволе в публичной зоне, вы увидите только открытые сервисы ''*Дополнительно: задайте конфигурацию сервисов файрвола для почтового сервера | 5. Еще раз проверьте список сервисов на файрволе в публичной зоне, вы увидите только открытые сервисы ''*Дополнительно: задайте конфигурацию сервисов файрвола для почтового сервера: | ||
<pre># firewall-cmd --zone=public --list-services</pre> | <pre># firewall-cmd --zone=public --list-services</pre> | ||
Строка 144: | Строка 145: | ||
Пошаговая инструкция для создания SSL-ключа, чтоб использовать с postfix и dovecot | Пошаговая инструкция для создания SSL-ключа, чтоб использовать с postfix и dovecot | ||
1. Создайте индивидуальный ключ | |||
<pre># cd /etc/pki/tls/certs | <pre> | ||
# cd /etc/pki/tls/certs | |||
# make eai.key | |||
</pre> | |||
''Пример'' | ''Пример'' | ||
< | <pre> | ||
umask 77 ; \ | |||
/usr/bin/openssl genrsa -aes128 2048 > eai.key | |||
Generating RSA private key, 2048 bit long modulus | |||
... | |||
... | |||
e is 65537 (0x10001) | |||
Enter pass phrase: #set passphrase | |||
Verifying - Enter pass phrase: #confirm | |||
</pre> | |||
2. Удалите ''Passphase'' из созданного ключа | |||
< | <pre> | ||
# openssl rsa -in eai.key -out eai.key | |||
''Пример'' | ''Пример'' | ||
< | <pre> | ||
Enter pass phrase for eai.key: #input passphrase | |||
writing RSA key | |||
</pre> | |||
3. Создайте csr | |||
<pre> # make eai.csr</pre> | |||
''Пример'' | ''Пример'' | ||
< | <pre> | ||
umask 77 ; \ | |||
/usr/bin/openssl req -utf8 -new -key eai.key -out eai.csr | |||
You are about to be asked to enter information that will be incorporated | |||
into your certificate request. | |||
What you are about to enter is what is called a Distinguished Name or a DN. | |||
There are quite a few fields but you can leave some blank | |||
For some fields there will be a default value, | |||
If you enter '.', the field will be left blank. | |||
----- | |||
Country Name (2 letter code) [XX]:RU #country | |||
State or Province Name (full name) []:Moscow #state | |||
Locality Name (eg, city) [Default City]:Moscow #city | |||
Organization Name (eg, company) [Default Company Ltd]:EAI #company | |||
Organizational Unit Name (eg, section) []:IT #department | |||
Common Name (eg, your name or your server's hostname) []:mail.test.ru #server's FQDN | |||
Email Address []:xxx@test.ru #email address | |||
Please enter the following 'extra' attributes | |||
to be sent with your certificate request | |||
A challenge password []: #Enter | |||
An optional company name []: #Enter | |||
</pre> | |||
4. Сгенерируйте ключ | 4. Сгенерируйте ключ | ||
< | <pre> | ||
# openssl x509 -in eai.csr -out eai.crt -req -signkey eai.key -days 3650 | |||
</pre> | |||
''Пример'' | ''Пример'' | ||
< | <pre> | ||
Signature ok | |||
subject=/C=JP/ST=Hiroshima/L=Hiroshima/O=GTS/OU=Server World/CN=www.srv.world/emailAddress=xxx@test.ru | |||
Getting Private key | |||
</pre> | |||
== Установка mariadb, Postfix и Dovecot == | == Установка mariadb, Postfix и Dovecot == | ||
1. Установите mariadb , Postfix , Dovecot и необходимые пакеты | |||
<pre># yum --enablerepo=centosplus install postfix</pre> | <pre> | ||
# yum --enablerepo=centosplus install postfix | |||
# yum install dovecot mariadb-server dovecot-mysql | |||
</pre> | |||
2. Обновите postfix с версии 2.x.x до версии 3.x.x | |||
На CentOS 7 версия postfix 2.x.x стоит по умолчанию. Необходимо ее удалить и обновить до версии 3.х.х. или выше. | На CentOS 7 версия postfix 2.x.x стоит по умолчанию. Необходимо ее удалить и обновить до версии 3.х.х. или выше. | ||
< | <pre> | ||
# yum -y remove postfix | |||
# yum -y remove ssmtp | |||
# yum -y remove sendmail | |||
</pre> | |||
Создайте файл репозитория gf.repo для установки postfix версии 3.х.х или выше | Создайте файл репозитория gf.repo для установки postfix версии 3.х.х или выше | ||
< | <pre># vi /etc/yum.repos.d/gf.repo</pre> | ||
''Пример'' | ''Пример'' | ||
< | <pre> | ||
[gf] | |||
name=Ghettoforge packages that won't overwrite core distro packages. | |||
mirrorlist=http://mirrorlist.ghettoforge.org/el/7/gf/$basearch/mirrorlist | |||
enabled=1 | |||
gpgcheck=1 | |||
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-gf.el7 | |||
failovermethod=priority | |||
[gf-plus] | |||
name=Ghettoforge packages that will overwrite core distro packages. | |||
mirrorlist=http://mirrorlist.ghettoforge.org/el/7/plus/$basearch/mirrorlist | |||
# Please read http://ghettoforge.org/index.php/Usage *before* enabling this repository! | |||
enabled=1 | |||
gpgcheck=1 | |||
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-gf.el7 | |||
failovermethod=priority | |||
</pre> | |||
Загрузите ключ для использования с репозиторием, вставьте в строку: /etc/pki/rpm-gpg/ | Загрузите ключ для использования с репозиторием, вставьте в строку: /etc/pki/rpm-gpg/ | ||
< | <pre> | ||
# cd /etc/pki/rpm-gpg/ | |||
# wget http://mirror.ghettoforge.org/distributions/gf/RPM-GPG-KEY-gf.el7 | |||
</pre> | |||
Установите postfix версию 3.х.х | Установите postfix версию 3.х.х | ||
< | <pre># yum -y install postfix3 postfix-mysql</pre> | ||
Проверьте postfix версию 3.х.х | Проверьте postfix версию 3.х.х | ||
< | <pre> | ||
# postconf -d | grep mail_version | |||
mail_version = 3.5.7 | |||
</pre> | |||
3. Настройте mariadb, postfix, dovecot для автоматического запуска | |||
< | <pre> | ||
# systemctl start mariadb | |||
# systemctl enable mariadb | |||
# systemctl start postfix | |||
# systemctl enable postfix | |||
# systemctl start dovecot | |||
# systemctl enable dovecot | |||
</pre> | |||
4. Проверьте статус mariadb, postfix, dovecot | |||
< | <pre> | ||
# systemctl status mariadb | |||
# systemctl status postfix | |||
# systemctl status dovecot | |||
</pre> | |||
== Настройка MariaDB == | == Настройка MariaDB == | ||
1. Установите UTF8 в mysql для работы с Unicode, добавив следующую команду к /etc/my.cnf.d/maridb-server.cnf для [mysqld] | |||
<pre># vi /etc/my.cnf</pre> | |||
< | |||
''Пример'' | ''Пример'' | ||
< | <pre> | ||
[mysqld] | |||
character-set-server = utf8 | |||
collation-server = utf8_general_ci | |||
skip-character-set-client-handshake | |||
bind-address=127.0.0.1 | |||
datadir=/var/lib/mysql | |||
socket=/var/lib/mysql/mysql.sock | |||
# Disabling symbolic-links is recommended to prevent assorted security risks | |||
symbolic-links=0 | |||
# Settings user and group are ignored when systemd is used. | |||
# If you need to run mysqld under a different user or group, | |||
# customize your systemd unit file for mariadb according to the | |||
# instructions in http://fedoraproject.org/wiki/Systemd | |||
[mysqld_safe] | |||
log-error=/var/log/mariadb/mariadb.log | |||
pid-file=/var/run/mariadb/mariadb.pid | |||
# | |||
# include all files from the config directory | |||
# | |||
!includedir /etc/my.cnf.d | |||
</pre> | |||
2. Перезапустите MariaDB | |||
<pre># systemctl restart mariadb</pre> | <pre># systemctl restart mariadb</pre> | ||
3. Настройте безопасный доступ к mysql, установив пароль для пользователя с правами root (* задайте только новый пароль, остальное пропустите, нажав клавишу ''enter'') | |||
<pre># mysql_secure_installation</pre> | <pre># mysql_secure_installation</pre> | ||
4. Зайдите в аккаунт mysql с новым паролем | |||
<pre># mysql -u root -p</pre> | <pre># mysql -u root -p</pre> | ||
5. Создайте новую базу данных (eaimail) для хранения записей об использовании почтового сервера | |||
<pre># CREATE DATABASE | <pre> | ||
# CREATE DATABASE eaimail; | |||
# USE eaimail; | |||
</pre> | |||
6. Создайте пользователя с правами доступа к базе eaimail | |||
# | <pre> | ||
# GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO 'yourdbuser'@'localhost' IDENTIFIED BY 'yourdbpassword'; | |||
# GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO 'yourdbuser'@'localhost.localdomain' IDENTIFIED BY 'yourdbpassword'; | |||
# FLUSH PRIVILEGES; | |||
</pre> | |||
7. Проверьте созданного пользователя | |||
< | <pre># SHOW GRANTS FOR yourdbuser@'localhost';</pre> | ||
8. Создайте таблицы для ''domains'', ''forwardings'' (для пересылки почты с интернационализированных адресов на адреса в кодировке ASCII) и ''users'' для создания почтовых ящиков | |||
# | <pre> | ||
# CREATE TABLE domains (domain varchar(50) NOT NULL, PRIMARY KEY (domain) ); | |||
</pre> | |||
<pre> | |||
# CREATE TABLE forwardings (source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source) ); | |||
</pre> | |||
<pre> | |||
# CREATE TABLE users (email varchar(80) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (email) ); | |||
# quit | |||
</pre> | |||
9. Перезапустите MariaDB | |||
# | <pre> | ||
# systemctl restart mariadb | |||
</pre> | |||
10 Настройте ''domain'' и ''users'' в базе данных интернационализированных адресов | |||
Зайдите в mariadb и выберите базу данных ''eaimail'', введите домен ASCII и IDN домен, введите ASCII почту и почту EAI с паролем | Зайдите в mariadb и выберите базу данных ''eaimail'', введите домен ASCII и IDN домен, введите ASCII почту и почту EAI с паролем | ||
< | <pre># mysql -u root -p</pre> | ||
< | <pre> | ||
# USE eaimail; | |||
# INSERT INTO domains (domain) VALUES ('test.ru'); | |||
# INSERT INTO domains (domain) VALUES ('тест.рф'); | |||
# INSERT INTO users (email, password) VALUES ('test@test.ru', ENCRYPT('userpassword')); | |||
# INSERT INTO users (email, password) VALUES ('тест@тест.рф', ENCRYPT('userpassword')); | |||
</pre> | |||
Настройте правило пересылки для всех писем с интернационализированного адреса на адрес ASCII | Настройте правило пересылки для всех писем с интернационализированного адреса на адрес ASCII | ||
< | <pre> | ||
# INSERT INTO forwardings (source,destination) VALUES ('тест@тест.рф','test@test.ru'); | |||
# quit | |||
</pre> | |||
== Настройка Postfix == | |||
Создайте связь между Postfix и MariaDB | |||
1. Создайте файл-скрипт, чтобы получить значение ''domain'' из базы данных | |||
<pre># vi /etc/postfix/mysql-virtual_domains.cf</pre> | <pre># vi /etc/postfix/mysql-virtual_domains.cf</pre> | ||
Строка 453: | Строка 415: | ||
''Пример'' | ''Пример'' | ||
< | <pre> | ||
user = yourdbuser | |||
password = yourdbpassword | |||
dbname = eaimail | |||
query = SELECT domain AS virtual FROM domains WHERE domain='%s' | |||
hosts = 127.0.0.1 | |||
</pre> | |||
2. Создайте файл mysql-virtual_forwardings.cf для получения пересланной почты из базы данных | |||
<pre># vi /etc/postfix/mysql-virtual_forwardings.cf</pre> | <pre># vi /etc/postfix/mysql-virtual_forwardings.cf</pre> | ||
Строка 469: | Строка 429: | ||
''Пример'' | ''Пример'' | ||
< | <pre> | ||
user = yourdbuser | |||
password = yourdbpassword | |||
dbname = eaimail | |||
</pre> | query = SELECT destination FROM forwardings WHERE source='%s' | ||
hosts = 127.0.0.1 | |||
</pre> | |||
3. Создайте файл-скрипт для создания почтового ящика и использования его для логина | |||
<pre># vi /etc/postfix/mysql-virtual_mailboxes.cf</pre> | <pre># vi /etc/postfix/mysql-virtual_mailboxes.cf</pre> | ||
Строка 485: | Строка 443: | ||
''Пример'' | ''Пример'' | ||
< | <pre> | ||
user = yourdbuser | |||
password = yourdbpassword | |||
dbname = eaimail | |||
query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s' | |||
hosts = 127.0.0.1 | |||
</pre> | |||
4. Создайте файл-скрипт для пересылки всей почты на другой сервер SMTP | |||
<pre># vi /etc/postfix/mysql-virtual_email2email.cf</pre> | <pre># vi /etc/postfix/mysql-virtual_email2email.cf</pre> | ||
Строка 501: | Строка 457: | ||
''Пример'' | ''Пример'' | ||
< | <pre> | ||
user = yourdbuser | |||
password = yourdbpassword | |||
dbname = eaimail | |||
query = SELECT email FROM users WHERE email='%s' | |||
hosts = 127.0.0.1 | |||
</pre> | |||
5. Установите необходимые права созданным скриптам | |||
< | <pre> | ||
# chmod o= /etc/postfix/mysql-virtual_*.cf | |||
# chgrp postfix /etc/postfix/mysql-virtual_*.cf | |||
</pre> | |||
6. Создайте пользователя и группу для почтового ящика | |||
< | <pre> | ||
# groupadd -g 5000 vmail | |||
# useradd -g vmail -u 5000 vmail -d /home/vmail -m | |||
</pre> | |||
7. Измените /etc/postfix/main.cf | |||
<pre> | <pre> | ||
# vi /etc/postfix/main.cf | |||
</pre> | |||
''Пример'' | ''Пример'' | ||
< | <pre> | ||
inet_interfaces = all | |||
inet_protocols = ipv4 | |||
mydestination = localhost, localhost.localdomain | |||
alias_database = hash:/etc/aliases | |||
sendmail_path = /usr/sbin/sendmail.postfix | |||
newaliases_path = /usr/bin/newaliases.postfix | |||
mailq_path = /usr/bin/mailq.postfix | |||
meta_directory = /etc/postfix | |||
shlib_directory = no | |||
myhostname = mail.test.ru | |||
mydomain = test.ru | |||
myorigin = $mydomain | |||
readme_directory = no | |||
mynetworks = 127.0.0.1 | |||
message_size_limit = 30720000 | |||
smtpd_sasl_auth_enable = yes | |||
smtpd_sasl_type = dovecot | |||
smtpd_sasl_path = private/auth | |||
smtpd_sasl_authenticated_header = yes | |||
broken_sasl_auth_clients = yes | |||
smtpd_use_tls = yes | |||
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination | |||
smtpd_tls_cert_file = /etc/pki/tls/certs/eai.crt | |||
smtpd_tls_key_file = /etc/pki/tls/certs/eai.key | |||
smtpd_tls_security_level = may | |||
smtpd_tls_auth_only = yes | |||
smtpd_tls_loglevel = 1 | |||
alias_maps = hash:/etc/aliases | |||
virtual_mailbox_base = /home/vmail | |||
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf | |||
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf | |||
virtual_uid_maps = static:5000 | |||
virtual_gid_maps = static:5000 | |||
virtual_alias_domains = тест.рф | |||
virtual_transport = dovecot | |||
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf | |||
smtputf8_enable = yes | |||
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks | |||
</pre> | |||
8. Измените /etc/postfix/master.cf , добавив команду в конце файла | |||
<pre># vi /etc/postfix/master.cf</pre> | <pre># vi /etc/postfix/master.cf</pre> | ||
Строка 611: | Строка 534: | ||
''Пример'' | ''Пример'' | ||
< | <pre> | ||
dovecot unix - n n - - pipe | |||
flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient} | |||
</pre> | |||
9. Измените /etc/postfix/master.cf , чтобы разрешить выполнение команд ниже (у остальных в начале должен стоять #) | |||
''Пример'' | ''Пример'' | ||
< | <pre> | ||
smtps inet n - - - - smtpd | |||
-o syslog_name=postfix/smtps | -o syslog_name=postfix/smtps | ||
-o smtpd_tls_wrappermode=yes | |||
-o smtpd_tls_wrappermode=yes | -o smtpd_sasl_auth_enable=yes | ||
-o smtpd_client_restrictions=permit_sasl_authenticated,reject | |||
-o smtpd_sasl_auth_enable=yes | -o smtpd_relay_restrictions=permit_sasl_authenticated,reject | ||
-o milter_macro_daemon_name=ORIGINATING | |||
-o smtpd_client_restrictions=permit_sasl_authenticated,reject | </pre> | ||
-o smtpd_relay_restrictions=permit_sasl_authenticated,reject | |||
-o milter_macro_daemon_name=ORIGINATING | |||
10. Перезапустите postfix | |||
''Пример'' | ''Пример'' | ||
< | <pre># systemctl restart postfix</pre> | ||
11. Назначьте алиасы почтовым адресам, изменив файл aliases | |||
Добавьте 2 строки | Добавьте 2 строки | ||
< | <pre># vi /etc/aliases</pre> | ||
< | <pre>postmaster: root | ||
root: postmaster@test.ru</pre> | |||
12. Обновите алиасы и перезапустите postfix | |||
<pre> | |||
# newaliases | |||
<pre># newaliases | # systemctl restart postfix | ||
</pre> | |||
== Настройка Dovecot == | == Настройка Dovecot == | ||
1. Сделайте резервную копию существующей конфигурации | |||
<pre># mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup</pre> | <pre># mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup</pre> | ||
2. Настройте конфигурацию dovecot | |||
<pre># vi /etc/dovecot/dovecot.conf</pre> | <pre># vi /etc/dovecot/dovecot.conf</pre> | ||
Строка 667: | Строка 587: | ||
''Пример'' | ''Пример'' | ||
< | <pre> | ||
protocols = imap pop3 lmtp | |||
log_timestamp = "%Y-%m-%d %H:%M:%S " | |||
mail_location = maildir:/home/vmail/%d/%n/Maildir | |||
ssl_cert = </etc/pki/tls/certs/eai.crt | |||
ssl_key = </etc/pki/tls/certs/eai.key | |||
< | ssl_dh_parameters_length = 2048 | ||
ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL | |||
namespace { | |||
type = private | |||
separator = . | |||
prefix = INBOX. | |||
inbox = yes | |||
} | |||
service auth { | |||
unix_listener auth-master { | |||
mode = 0600 | |||
user = vmail | |||
} | |||
unix_listener /var/spool/postfix/private/auth { | |||
mode = 0666 | |||
user = postfix | |||
group = postfix | |||
} | |||
user = root | |||
} | |||
auth_mechanisms = plain login | |||
service auth-worker { | |||
user = root | |||
} | |||
protocol lda { | |||
log_path = /home/vmail/dovecot-deliver.log | |||
auth_socket_path = /var/run/dovecot/auth-master | |||
postmaster_address = postmaster@test.ru | |||
} | |||
protocol pop3 { | |||
pop3_uidl_format = %08Xu%08Xv | |||
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh | |||
} | |||
passdb { | |||
driver = sql | |||
args = /etc/dovecot/dovecot-sql.conf.ext | |||
} | |||
userdb { | |||
driver = static | |||
args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes | |||
} | |||
</pre> | |||
3. Создайте скрипт, чтобы dovecot мог работать с SQL | |||
<pre># vi /etc/dovecot/dovecot-sql.conf.ext</pre> | <pre># vi /etc/dovecot/dovecot-sql.conf.ext</pre> | ||
Строка 765: | Строка 643: | ||
''Пример '' | ''Пример '' | ||
< | <pre> | ||
driver = mysql | |||
connect = host=127.0.0.1 dbname=eaimail user=yourdbuser password=yourdbpassword | |||
default_pass_scheme = CRYPT | |||
password_query = SELECT email as user, password FROM users WHERE email='%u'; | |||
</pre> | |||
4. Установите необходимые права группе dovecot | |||
< | <pre> | ||
# chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext | |||
# chmod o= /etc/dovecot/dovecot-sql.conf.ext | |||
</pre> | |||
5. Перезапустите dovecot | |||
<pre># systemctl restart dovecot</pre> | <pre># systemctl restart dovecot</pre> | ||
6. Проверьте журнал почтового сервера /var/log/maillog | |||
<pre># tail /var/log/maillog</pre> | <pre># tail /var/log/maillog</pre> | ||
Строка 789: | Строка 667: | ||
''Пример'' | ''Пример'' | ||
< | <pre> | ||
Mar 18 17:10:26 localhost postfix/postfix-script[3274]: starting the Postfix mail system | |||
Mar 18 17:10:26 localhost postfix/master[3276]: daemon started -- version 2.10.1, configuration /etc/postfix | |||
Mar 18 17:12:28 localhost dovecot: master: Dovecot v2.2.10 starting up for imap, pop3 (core dumps disabled) | |||
</pre> | |||
== Протестируйте почтовый сервер EAI == | == Протестируйте почтовый сервер EAI == | ||
1. Протестируйте pop3 | |||
<pre># telnet localhost pop3</pre> | <pre># telnet localhost pop3</pre> | ||
''Пример'' | ''Пример'' | ||
< | <pre> | ||
Trying 127.0.0.1... | |||
Connected to localhost.localdomain. | |||
Escape character is '^]'. | |||
+OK Dovecot ready. | |||
</pre> | |||
2. Протестируйте SMTP | |||
< | <pre> | ||
# telnet localhost 25 | |||
# ehlo localhost | |||
</pre> | |||
''Пример'' | ''Пример'' | ||
< | <pre> | ||
250-mail.test.ru | |||
250-PIPELINING | |||
250-SIZE 30720000 | |||
250-VRFY | |||
250-ETRN | |||
250-STARTTLS | |||
250-AUTH PLAIN | |||
250-AUTH=PLAIN | |||
250-ENHANCEDSTATUSCODES | |||
250-8BITMIME | |||
250-DSN | |||
250 SMTPUTF8 | |||
</pre> | |||
3. Протестируйте отправку и получение почты при помощи mailx | |||
Проверьте журнал /var/log/maillog Примерный результат: | Проверьте журнал /var/log/maillog Примерный результат: | ||
< | <pre> | ||
# yum -y install mailx | |||
# mailx thai@test.ru (input subject then press enter follow by content and use Ctrl+D for sending out) | |||
# tail /var/log/maillog | |||
</pre> | |||
''Пример'' | ''Пример'' | ||
< | <pre>Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=<root> | ||
Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=<20171113081907.E9AB020199E5@mail.test.ru> | |||
Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=<root@test.ru>, size=434, nrcpt=1 (queue active) | |||
Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=<tanagan@test.ru>, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service) | |||
Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed | |||
</pre> | |||
Если вы нашли ошибку в журнале: «unsupported dictionary type: MySQL», причина заключается в использовании postfix 3.2.4. В этой версии еще есть баги. Проверьте /etc/postfix/dynamicmaps.cf.d/ | Если вы нашли ошибку в журнале: «unsupported dictionary type: MySQL», причина заключается в использовании postfix 3.2.4. В этой версии еще есть баги. Проверьте /etc/postfix/dynamicmaps.cf.d/ | ||
< | <pre> | ||
# cd /etc/postfix/dynamicmaps.cf.d/ | |||
# vi mysql.cf | |||
</pre> | |||
< | <pre>mysql /usr/lib/postfix/postfix-mysql.so dict_mysql_open</pre> | ||
4. Проверьте журнал, чтобы увидеть результат отправки в Dovecot /home/vmail/dovecot-deliver.log, Примерный результат: | |||
# | <pre># tail /home/vmail/dovecot-deliver.log | ||
2017-11-13 15:19:08 lda(tanagan@test.ru): Info: msgid=<20171113081907.E9AB020199E5@mail.test.ru: saved mail to INBOX</pre> | |||
5. Проверьте почтовый ящик. При отправке и получении писем вы увидите следующий результат: | |||
<pre># cd /home/vmail/test.ru/thai/Maildir | |||
# find | |||
< | </pre> | ||
''Пример'' | ''Пример'' | ||
< | <pre>. | ||
./dovecot-uidlist | |||
./cur | |||
./new | |||
./new/1285609582.P6115Q0M368794.li172-137 | |||
./dovecot.index | |||
./dovecot.index.log | |||
./tmp | |||
</pre> | |||
6. Проверьте почтовый ящик с помощью почтового клиента mutt, чтобы увидеть письма в почтовом ящике | |||
<pre># yum -y install mutt | |||
# mutt -f . | |||
</pre> | |||
<pre># yum -y install mutt | |||
7. Проверьте отправку писем с интернационализированного адресов | |||
* В конце отправляемого сообщения поставьте «.» | * В конце отправляемого сообщения поставьте «.» | ||
* Нажмите Ctrl+] , чтобы выйти | * Нажмите Ctrl+] , чтобы выйти | ||
< | <pre># telnet localhost 25 | ||
# EHLO localhost | |||
# MAIL FROM: тест@тест.рф SMTPUTF8 | |||
# RCPT TO: тест1@тест1.рф | |||
# data | |||
# Subject: eai test | |||
# | |||
# . | |||
</pre> | |||
== Установите SquirrelMail == | == Установите SquirrelMail == | ||
1. Установите squirrelmail | |||
<pre># yum -y install epel-release</pre> | <pre> | ||
# yum -y install epel-release | |||
# yum install squirrelmail | |||
</pre> | |||
2. Если у вас не установлен Apache, установите Apache | |||
<pre> | |||
# yum -y install httpd | |||
<pre># yum -y install httpd | # systemctl enable httpd | ||
# systemctl start httpd | |||
# systemctl status httpd | |||
</pre> | |||
3. Скопируйте/перенесите squirrelmail в /var/www/html/ | |||
<pre># cd /var/www/html/</pre> | <pre># cd /var/www/html/</pre> | ||
Строка 954: | Строка 809: | ||
(скопируйте squirrelmail в /var/www/html/ например используя для копирования winscp) | (скопируйте squirrelmail в /var/www/html/ например используя для копирования winscp) | ||
4. Создайте каталог данных для squirrelmail | |||
<pre># cd /var/lib/squirrelmail/ | <pre> | ||
# cd /var/lib/squirrelmail/ | |||
# mkdir data | |||
# chmod ugo+rwx data/ | |||
</pre> | |||
5. Протестируйте логин для доступа через веб-браузеры. Введите IP сервера, затем /squirrelmail | |||
<pre># Test sending and receiving mail</pre> | <pre># Test sending and receiving mail</pre> |
Текущая версия от 06:15, 27 июня 2022
Инструкция по установке EAI почтового сервера под ОС CentOS 7
Почтовый сервер с поддержкой EAI
С помощью данной инструкции вы сможете установить почтовый сервер с поддержкой использования интернационализированных адресов электронной почты (EAI) на базе ПО с открытым исходным кодом. Почтовый сервер можно развивать далее с помощью другого ПО.
Необходимое ПО
- Centos 7.4
- Postfix 3.2.3
- Dovecot 2.2.10
- MariaDB 10.3.11
- Squirrelmail 5.5.56
Примечания:
- в данной инструкции не разъясняется, как установить Centos 7.4
- версия Postfix 3.x.x и выше поддерживает EAI
- в реальных условиях необходимо также настроить сервер DNS
- putty и winscp используются для подключения к серверу
Установка EAI почтового сервера
Задайте имя хоста
1. Обновите пакеты почтового сервера до последней версии
# yum -y update
2. Задайте имя хоста (например, mail.test.ru) с помощью команды
# hostnamectl set-hostname mail.test.ru
3. Добавьте имя хоста в файл hosts
# vi /etc/hosts
Пример файла hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 mail.test.ru ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 mail.test.ru
*В зависимости от среды установки CentOS вам может понадобиться установить дополнительные сервисы (например, может быть недоступна команда «vi»)
4. Установите wget для скачивания дополнительного ПО
# yum -y install wget
5. Установите telnet для тестирования работы почтового сервера
# yum -y install telnet
Настройте файрвол
1. Проверьте, что у почтового сервиса имеется статус «firewalld service»
Статус должен быть активным (работающим)
# systemctl status firewalld
Пример
Active: active (running) since Mon 2019-11-18 14:12:03 +07; 1h 13min ago
2. Проверьте открытые зону файрвола и сетевой интерфейс
# firewall-cmd --get-active-zones
Пример
public interfaces: ens32
3. Проверьте сервисы файрвола в публичной зоне
# firewall-cmd --zone=public --list-services
Пример
cockpit dhcpv6-client ssh
4. Откройте необходимые сервисы на файрволе в публичной зоне почтового сервера
# firewall-cmd --permanent --zone=public --add-service=http # firewall-cmd --permanent --zone=public --add-service=https # firewall-cmd --permanent --zone=public --add-service=mysql # firewall-cmd --permanent --zone=public --add-service=smtp # firewall-cmd --permanent --zone=public --add-service=smtps # firewall-cmd --permanent --zone=public --add-service=imap # firewall-cmd --permanent --zone=public --add-service=imaps # firewall-cmd --reload
5. Еще раз проверьте список сервисов на файрволе в публичной зоне, вы увидите только открытые сервисы *Дополнительно: задайте конфигурацию сервисов файрвола для почтового сервера:
# firewall-cmd --zone=public --list-services
Пример
cockpit dhcpv6-client http https imap imaps mysql smtp smtps ssh
6. В этом примере мы открыли SELinux для удобства настройки
# vi /etc/selinux/config
Пример
This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
7. Перезапустите сервер
# reboot # sestatus
Пример
disabled
Создайте SSL-сертификат
Пошаговая инструкция для создания SSL-ключа, чтоб использовать с postfix и dovecot
1. Создайте индивидуальный ключ
# cd /etc/pki/tls/certs # make eai.key
Пример
umask 77 ; \ /usr/bin/openssl genrsa -aes128 2048 > eai.key Generating RSA private key, 2048 bit long modulus ... ... e is 65537 (0x10001) Enter pass phrase: #set passphrase Verifying - Enter pass phrase: #confirm
2. Удалите Passphase из созданного ключа
# openssl rsa -in eai.key -out eai.key ''Пример'' <pre> Enter pass phrase for eai.key: #input passphrase writing RSA key
3. Создайте csr
# make eai.csr
Пример
umask 77 ; \ /usr/bin/openssl req -utf8 -new -key eai.key -out eai.csr You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:RU #country State or Province Name (full name) []:Moscow #state Locality Name (eg, city) [Default City]:Moscow #city Organization Name (eg, company) [Default Company Ltd]:EAI #company Organizational Unit Name (eg, section) []:IT #department Common Name (eg, your name or your server's hostname) []:mail.test.ru #server's FQDN Email Address []:xxx@test.ru #email address Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: #Enter An optional company name []: #Enter
4. Сгенерируйте ключ
# openssl x509 -in eai.csr -out eai.crt -req -signkey eai.key -days 3650
Пример
Signature ok subject=/C=JP/ST=Hiroshima/L=Hiroshima/O=GTS/OU=Server World/CN=www.srv.world/emailAddress=xxx@test.ru Getting Private key
Установка mariadb, Postfix и Dovecot
1. Установите mariadb , Postfix , Dovecot и необходимые пакеты
# yum --enablerepo=centosplus install postfix # yum install dovecot mariadb-server dovecot-mysql
2. Обновите postfix с версии 2.x.x до версии 3.x.x
На CentOS 7 версия postfix 2.x.x стоит по умолчанию. Необходимо ее удалить и обновить до версии 3.х.х. или выше.
# yum -y remove postfix # yum -y remove ssmtp # yum -y remove sendmail
Создайте файл репозитория gf.repo для установки postfix версии 3.х.х или выше
# vi /etc/yum.repos.d/gf.repo
Пример
[gf] name=Ghettoforge packages that won't overwrite core distro packages. mirrorlist=http://mirrorlist.ghettoforge.org/el/7/gf/$basearch/mirrorlist enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-gf.el7 failovermethod=priority [gf-plus] name=Ghettoforge packages that will overwrite core distro packages. mirrorlist=http://mirrorlist.ghettoforge.org/el/7/plus/$basearch/mirrorlist # Please read http://ghettoforge.org/index.php/Usage *before* enabling this repository! enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-gf.el7 failovermethod=priority
Загрузите ключ для использования с репозиторием, вставьте в строку: /etc/pki/rpm-gpg/
# cd /etc/pki/rpm-gpg/ # wget http://mirror.ghettoforge.org/distributions/gf/RPM-GPG-KEY-gf.el7
Установите postfix версию 3.х.х
# yum -y install postfix3 postfix-mysql
Проверьте postfix версию 3.х.х
# postconf -d | grep mail_version mail_version = 3.5.7
3. Настройте mariadb, postfix, dovecot для автоматического запуска
# systemctl start mariadb # systemctl enable mariadb # systemctl start postfix # systemctl enable postfix # systemctl start dovecot # systemctl enable dovecot
4. Проверьте статус mariadb, postfix, dovecot
# systemctl status mariadb # systemctl status postfix # systemctl status dovecot
Настройка MariaDB
1. Установите UTF8 в mysql для работы с Unicode, добавив следующую команду к /etc/my.cnf.d/maridb-server.cnf для [mysqld]
# vi /etc/my.cnf
Пример
[mysqld] character-set-server = utf8 collation-server = utf8_general_ci skip-character-set-client-handshake bind-address=127.0.0.1 datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # Settings user and group are ignored when systemd is used. # If you need to run mysqld under a different user or group, # customize your systemd unit file for mariadb according to the # instructions in http://fedoraproject.org/wiki/Systemd [mysqld_safe] log-error=/var/log/mariadb/mariadb.log pid-file=/var/run/mariadb/mariadb.pid # # include all files from the config directory # !includedir /etc/my.cnf.d
2. Перезапустите MariaDB
# systemctl restart mariadb
3. Настройте безопасный доступ к mysql, установив пароль для пользователя с правами root (* задайте только новый пароль, остальное пропустите, нажав клавишу enter)
# mysql_secure_installation
4. Зайдите в аккаунт mysql с новым паролем
# mysql -u root -p
5. Создайте новую базу данных (eaimail) для хранения записей об использовании почтового сервера
# CREATE DATABASE eaimail; # USE eaimail;
6. Создайте пользователя с правами доступа к базе eaimail
# GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO 'yourdbuser'@'localhost' IDENTIFIED BY 'yourdbpassword'; # GRANT SELECT, INSERT, UPDATE, DELETE ON eaimail.* TO 'yourdbuser'@'localhost.localdomain' IDENTIFIED BY 'yourdbpassword'; # FLUSH PRIVILEGES;
7. Проверьте созданного пользователя
# SHOW GRANTS FOR yourdbuser@'localhost';
8. Создайте таблицы для domains, forwardings (для пересылки почты с интернационализированных адресов на адреса в кодировке ASCII) и users для создания почтовых ящиков
# CREATE TABLE domains (domain varchar(50) NOT NULL, PRIMARY KEY (domain) );
# CREATE TABLE forwardings (source varchar(80) NOT NULL, destination TEXT NOT NULL, PRIMARY KEY (source) );
# CREATE TABLE users (email varchar(80) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (email) ); # quit
9. Перезапустите MariaDB
# systemctl restart mariadb
10 Настройте domain и users в базе данных интернационализированных адресов
Зайдите в mariadb и выберите базу данных eaimail, введите домен ASCII и IDN домен, введите ASCII почту и почту EAI с паролем
# mysql -u root -p
# USE eaimail; # INSERT INTO domains (domain) VALUES ('test.ru'); # INSERT INTO domains (domain) VALUES ('тест.рф'); # INSERT INTO users (email, password) VALUES ('test@test.ru', ENCRYPT('userpassword')); # INSERT INTO users (email, password) VALUES ('тест@тест.рф', ENCRYPT('userpassword'));
Настройте правило пересылки для всех писем с интернационализированного адреса на адрес ASCII
# INSERT INTO forwardings (source,destination) VALUES ('тест@тест.рф','test@test.ru'); # quit
Настройка Postfix
Создайте связь между Postfix и MariaDB
1. Создайте файл-скрипт, чтобы получить значение domain из базы данных
# vi /etc/postfix/mysql-virtual_domains.cf
Пример
user = yourdbuser password = yourdbpassword dbname = eaimail query = SELECT domain AS virtual FROM domains WHERE domain='%s' hosts = 127.0.0.1
2. Создайте файл mysql-virtual_forwardings.cf для получения пересланной почты из базы данных
# vi /etc/postfix/mysql-virtual_forwardings.cf
Пример
user = yourdbuser password = yourdbpassword dbname = eaimail query = SELECT destination FROM forwardings WHERE source='%s' hosts = 127.0.0.1
3. Создайте файл-скрипт для создания почтового ящика и использования его для логина
# vi /etc/postfix/mysql-virtual_mailboxes.cf
Пример
user = yourdbuser password = yourdbpassword dbname = eaimail query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s' hosts = 127.0.0.1
4. Создайте файл-скрипт для пересылки всей почты на другой сервер SMTP
# vi /etc/postfix/mysql-virtual_email2email.cf
Пример
user = yourdbuser password = yourdbpassword dbname = eaimail query = SELECT email FROM users WHERE email='%s' hosts = 127.0.0.1
5. Установите необходимые права созданным скриптам
# chmod o= /etc/postfix/mysql-virtual_*.cf # chgrp postfix /etc/postfix/mysql-virtual_*.cf
6. Создайте пользователя и группу для почтового ящика
# groupadd -g 5000 vmail # useradd -g vmail -u 5000 vmail -d /home/vmail -m
7. Измените /etc/postfix/main.cf
# vi /etc/postfix/main.cf
Пример
inet_interfaces = all inet_protocols = ipv4 mydestination = localhost, localhost.localdomain alias_database = hash:/etc/aliases sendmail_path = /usr/sbin/sendmail.postfix newaliases_path = /usr/bin/newaliases.postfix mailq_path = /usr/bin/mailq.postfix meta_directory = /etc/postfix shlib_directory = no myhostname = mail.test.ru mydomain = test.ru myorigin = $mydomain readme_directory = no mynetworks = 127.0.0.1 message_size_limit = 30720000 smtpd_sasl_auth_enable = yes smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_authenticated_header = yes broken_sasl_auth_clients = yes smtpd_use_tls = yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination smtpd_tls_cert_file = /etc/pki/tls/certs/eai.crt smtpd_tls_key_file = /etc/pki/tls/certs/eai.key smtpd_tls_security_level = may smtpd_tls_auth_only = yes smtpd_tls_loglevel = 1 alias_maps = hash:/etc/aliases virtual_mailbox_base = /home/vmail virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 virtual_alias_domains = тест.рф virtual_transport = dovecot virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf smtputf8_enable = yes proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks
8. Измените /etc/postfix/master.cf , добавив команду в конце файла
# vi /etc/postfix/master.cf
Пример
dovecot unix - n n - - pipe flags=DRhu user=vmail:vmail argv=/usr/libexec/dovecot/deliver -f ${sender} -d ${recipient}
9. Измените /etc/postfix/master.cf , чтобы разрешить выполнение команд ниже (у остальных в начале должен стоять #)
Пример
smtps inet n - - - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING
10. Перезапустите postfix
Пример
# systemctl restart postfix
11. Назначьте алиасы почтовым адресам, изменив файл aliases
Добавьте 2 строки
# vi /etc/aliases
postmaster: root root: postmaster@test.ru
12. Обновите алиасы и перезапустите postfix
# newaliases # systemctl restart postfix
Настройка Dovecot
1. Сделайте резервную копию существующей конфигурации
# mv /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf-backup
2. Настройте конфигурацию dovecot
# vi /etc/dovecot/dovecot.conf
Пример
protocols = imap pop3 lmtp log_timestamp = "%Y-%m-%d %H:%M:%S " mail_location = maildir:/home/vmail/%d/%n/Maildir ssl_cert = </etc/pki/tls/certs/eai.crt ssl_key = </etc/pki/tls/certs/eai.key ssl_dh_parameters_length = 2048 ssl_cipher_list = ALL:!LOW:!SSLv2:!EXP:!aNULL namespace { type = private separator = . prefix = INBOX. inbox = yes } service auth { unix_listener auth-master { mode = 0600 user = vmail } unix_listener /var/spool/postfix/private/auth { mode = 0666 user = postfix group = postfix } user = root } auth_mechanisms = plain login service auth-worker { user = root } protocol lda { log_path = /home/vmail/dovecot-deliver.log auth_socket_path = /var/run/dovecot/auth-master postmaster_address = postmaster@test.ru } protocol pop3 { pop3_uidl_format = %08Xu%08Xv pop3_client_workarounds = outlook-no-nuls oe-ns-eoh } passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext } userdb { driver = static args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes }
3. Создайте скрипт, чтобы dovecot мог работать с SQL
# vi /etc/dovecot/dovecot-sql.conf.ext
Пример
driver = mysql connect = host=127.0.0.1 dbname=eaimail user=yourdbuser password=yourdbpassword default_pass_scheme = CRYPT password_query = SELECT email as user, password FROM users WHERE email='%u';
4. Установите необходимые права группе dovecot
# chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext # chmod o= /etc/dovecot/dovecot-sql.conf.ext
5. Перезапустите dovecot
# systemctl restart dovecot
6. Проверьте журнал почтового сервера /var/log/maillog
# tail /var/log/maillog
Пример
Mar 18 17:10:26 localhost postfix/postfix-script[3274]: starting the Postfix mail system Mar 18 17:10:26 localhost postfix/master[3276]: daemon started -- version 2.10.1, configuration /etc/postfix Mar 18 17:12:28 localhost dovecot: master: Dovecot v2.2.10 starting up for imap, pop3 (core dumps disabled)
Протестируйте почтовый сервер EAI
1. Протестируйте pop3
# telnet localhost pop3
Пример
Trying 127.0.0.1... Connected to localhost.localdomain. Escape character is '^]'. +OK Dovecot ready.
2. Протестируйте SMTP
# telnet localhost 25 # ehlo localhost
Пример
250-mail.test.ru 250-PIPELINING 250-SIZE 30720000 250-VRFY 250-ETRN 250-STARTTLS 250-AUTH PLAIN 250-AUTH=PLAIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250-DSN 250 SMTPUTF8
3. Протестируйте отправку и получение почты при помощи mailx
Проверьте журнал /var/log/maillog Примерный результат:
# yum -y install mailx # mailx thai@test.ru (input subject then press enter follow by content and use Ctrl+D for sending out) # tail /var/log/maillog
Пример
Nov 13 15:19:07 mail postfix/pickup[31954]: E9AB020199E5: uid=0 from=<root> Nov 13 15:19:07 mail postfix/cleanup[1938]: E9AB020199E5: message-id=<20171113081907.E9AB020199E5@mail.test.ru> Nov 13 15:19:07 mail postfix/qmgr[21141]: E9AB020199E5: from=<root@test.ru>, size=434, nrcpt=1 (queue active) Nov 13 15:19:08 mail postfix/pipe[1946]: E9AB020199E5: to=<tanagan@test.ru>, relay=dovecot, delay=0.09, delays=0.04/0.01/0/0.03, dsn=2.0.0, status=sent (delivered via dovecot service) Nov 13 15:19:08 mail postfix/qmgr[21141]: E9AB020199E5: removed
Если вы нашли ошибку в журнале: «unsupported dictionary type: MySQL», причина заключается в использовании postfix 3.2.4. В этой версии еще есть баги. Проверьте /etc/postfix/dynamicmaps.cf.d/
# cd /etc/postfix/dynamicmaps.cf.d/ # vi mysql.cf
mysql /usr/lib/postfix/postfix-mysql.so dict_mysql_open
4. Проверьте журнал, чтобы увидеть результат отправки в Dovecot /home/vmail/dovecot-deliver.log, Примерный результат:
# tail /home/vmail/dovecot-deliver.log 2017-11-13 15:19:08 lda(tanagan@test.ru): Info: msgid=<20171113081907.E9AB020199E5@mail.test.ru: saved mail to INBOX
5. Проверьте почтовый ящик. При отправке и получении писем вы увидите следующий результат:
# cd /home/vmail/test.ru/thai/Maildir # find
Пример
. ./dovecot-uidlist ./cur ./new ./new/1285609582.P6115Q0M368794.li172-137 ./dovecot.index ./dovecot.index.log ./tmp
6. Проверьте почтовый ящик с помощью почтового клиента mutt, чтобы увидеть письма в почтовом ящике
# yum -y install mutt # mutt -f .
7. Проверьте отправку писем с интернационализированного адресов
- В конце отправляемого сообщения поставьте «.»
- Нажмите Ctrl+] , чтобы выйти
# telnet localhost 25 # EHLO localhost # MAIL FROM: тест@тест.рф SMTPUTF8 # RCPT TO: тест1@тест1.рф # data # Subject: eai test # # .
Установите SquirrelMail
1. Установите squirrelmail
# yum -y install epel-release # yum install squirrelmail
2. Если у вас не установлен Apache, установите Apache
# yum -y install httpd # systemctl enable httpd # systemctl start httpd # systemctl status httpd
3. Скопируйте/перенесите squirrelmail в /var/www/html/
# cd /var/www/html/
(скопируйте squirrelmail в /var/www/html/ например используя для копирования winscp)
4. Создайте каталог данных для squirrelmail
# cd /var/lib/squirrelmail/ # mkdir data # chmod ugo+rwx data/
5. Протестируйте логин для доступа через веб-браузеры. Введите IP сервера, затем /squirrelmail
# Test sending and receiving mail